package com.naiterui.ehp.bs.emr.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.naiterui.ehp.bs.emr.vo.patient.SignInfoVO;
import com.naiterui.ehp.bs.emr.vo.scale.PatientScaleVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.io.Serializable;

/**
 * 病历记录VO
 *
 * @author lichaopi
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
@ApiModel(value = "DrRecordVO", description = "病历记录VO")
public class DrRecordVO implements Serializable {

    private static final long serialVersionUID = 4671798523863537959L;
    @ApiModelProperty(value = "记录id")
    @JsonInclude(Include.NON_NULL)
    private String id;

    @ApiModelProperty(value = "医生id")
    @JsonInclude(Include.NON_NULL)
    private Long doctorId;// 医生id

    @ApiModelProperty(value = "医生姓名")
    @JsonInclude(Include.NON_NULL)
    private String doctorName;// 医生姓名

    @ApiModelProperty(value = "科室")
    @JsonInclude(Include.NON_NULL)
    private String department;// 科室

    @ApiModelProperty(value = "医院名称")
    @JsonInclude(Include.NON_NULL)
    private String hospitalName;// 医院名称

    @ApiModelProperty(value = "患者id")
    @JsonInclude(Include.NON_NULL)
    private Long patientId;// 患者id

    @ApiModelProperty(value = "患者姓名")
    @JsonInclude(Include.NON_NULL)
    private String name;// 患者姓名

    @ApiModelProperty(value = "患者性别0女1男")
    @JsonInclude(Include.NON_NULL)
    private Integer gender;   // 0女1男

    @ApiModelProperty(value = "年龄")
    @JsonInclude(Include.NON_NULL)
    private Integer age; // 年龄

    @ApiModelProperty(value = "年龄单位:岁，月，周")
    @JsonInclude(Include.NON_NULL)
    private String ageUnit; // 年龄单位:岁，月，周

    @ApiModelProperty(value = "显示年龄")
    @JsonInclude(Include.NON_NULL)
    private String ageStr; // 年龄

    @ApiModelProperty(value = "0:原诊疗记录,1:患者原病例,2:系统处方,3:患者发送病例,4:病历填写病历,5:带基本病情诊疗记录,6:带基本病情系统处方,7:医生带处方病历,8:线上诊室病历,9:患者填写量表")
    @JsonInclude(Include.NON_NULL)
    private Integer caseType;// 0:原诊疗记录,1:患者原病例,2:系统处方,3:患者发送病例,4:病历填写病历,5:带基本病情诊疗记录,6:带基本病情系统处方

    @ApiModelProperty(value = "0：父亲；1：母亲；2：兄弟姐妹；3：子女；4：丈夫；5：妻子；6：本人；7：其他家庭成员")
    @JsonInclude(Include.NON_NULL)
    private Integer relation;// 0：父亲；1：母亲；2：兄弟姐妹；3：子女；4：丈夫；5：妻子；6：本人；7：其他家庭成员

    @ApiModelProperty(value = "创建时间戳")
    @JsonInclude(Include.NON_NULL)
    private Long createAt;// 创建时间戳

    @ApiModelProperty(value = "其它信息")
    @JsonInclude(Include.NON_NULL)
    private Object mdicalRecordVO;

    /**
     * 是否显示作废按钮：0, 显示； 1， 不显示；
     */
    @ApiModelProperty(value = "是否显示作废按钮：0, 显示； 1， 不显示；")
    private Integer showInvalidBtn;

    @JsonInclude(Include.NON_NULL)
    @ApiModelProperty(value = "医生填写病历(只用于swagger显示)(castType=4或7或8时时是这种结构)")
    private DrCaseVO swaggerDrCaseVO;

    @JsonInclude(Include.NON_NULL)
    @ApiModelProperty(value = "患者发送病历(只用于swagger显示)(castType=3是这种结构)")
    private RecordPaitentCaseVO swaggerPaitentCaseVO;

    @JsonInclude(Include.NON_NULL)
    @ApiModelProperty(value = "原诊疗记录(只用于swagger显示)(castType=0或5时是这种结构)")
    private OldRecordVO swaggerOldRecordVO;

    @JsonInclude(Include.NON_NULL)
    @ApiModelProperty(value = "患者老病历(只用于swagger显示)(castType=1时是这种结构)")
    private PatientOldCaseVO swaggerPatientOldCaseVO;

    @JsonInclude(Include.NON_NULL)
    @ApiModelProperty(value = "系统处方(只用于swagger显示)(castType=2或6时是这种结构)")
    private RecordPrescriptionVO swaggerRecordPrescriptionVO;

    @JsonInclude(Include.NON_NULL)
    @ApiModelProperty(value = "患者填写是量表(只用于swagger显示)(castType=9时是这种结构)")
    private PatientScaleVO patientScaleVO;

    @ApiModelProperty(value = "病例标签（1: 患者病例,2:共享病例）")
    private Integer tagsType;

    @ApiModelProperty(value = "签名信息")
    private SignInfoVO signInfo;

    @ApiModelProperty(value = "就诊人与患者关系")
    private String inquirerRelationName;


}
